//using System.Collections;
//using System.Collections.Generic;
//using UnityEngine;

//namespace SimpleFramework
//{
//    public interface IUpdater
//    {
//        bool Update();

//        void Finish();
//    }

//    public class UpdateSystem : TMonoSingletonX<UpdateSystem>
//    {
//        private List<IUpdater> m_AddQueue = new List<IUpdater>();
//        private List<IUpdater> m_RunQueue = new List<IUpdater>();

//        // Update is called once per frame
//        void Update()
//        {
//            if (m_AddQueue.Count > 0)
//            {
//                m_RunQueue.AddRange(m_AddQueue);
//                m_AddQueue.Clear();
//            }

//            int i = 0;
//            while (i < m_RunQueue.Count)
//            {
//                if (m_RunQueue[i].Update())
//                {
//                    m_RunQueue[i].Finish();
//                    m_RunQueue.RemoveAt(i);
//                }
//                else
//                {
//                    ++i;
//                }
//            }
//        }

//        public void Add(IUpdater updater)
//        {
//            m_AddQueue.Add(updater);
//        }

//        public void Remove(IUpdater updater)
//        {
//            m_RunQueue.Remove(updater);
//            m_AddQueue.Remove(updater);
//        }
//    }
//}